home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / util / boot / snap_v2_0.lha / Snap / Snap.h < prev    next >
C/C++ Source or Header  |  1995-09-13  |  8KB  |  287 lines

  1. #include <intuition/intuitionbase.h>
  2.  
  3. #ifdef AZTEC_C
  4. #include <functions.h>
  5. #include <pragmas.h>
  6. #endif // AZTEC_C
  7.  
  8. #ifdef LATTICE
  9. #include <proto/all.h>
  10. #endif // LATTICE
  11.  
  12. #ifdef REQLIB
  13. #include <libraries/reqbase.h>
  14.  
  15. void BruceFileRequester(struct ReqFileRequester *);
  16. #ifdef AZTEC_C
  17. #pragma amicall(ReqBase, 0x54, BruceFileRequester(a0))
  18. #endif
  19. #ifdef LATTICE
  20. #pragma libcall ReqBase BruceFileRequester 54 801
  21. #endif
  22.  
  23. #endif // REQLIB
  24. #ifdef ASLLIB
  25. #include <libraries/asl.h>
  26. #include <clib/asl_protos.h>
  27. #include <pragmas/asl_pragmas.h>
  28.  
  29. UBYTE *FilePart(UBYTE *path);
  30. UBYTE *PathPart(UBYTE *path);
  31. BOOL AddPart(UBYTE *dirname, UBYTE *filename, unsigned long size );
  32. #ifdef AZTEC_C
  33. /* Lattice users will have to use 2.0 amiga.lib for this one
  34.    I don't include clib/dos_protos.h and pragmas/dos_lib.h because
  35.    of name conflicts, and many prototypes differ from the manx ones */
  36. #pragma amicall(DOSBase, 0x366, FilePart(d1))
  37. #pragma amicall(DOSBase, 0x36c, PathPart(d1))
  38. #pragma amicall(DOSBase, 0x372, AddPart(d1,d2,d3))
  39. #endif // AZTEC_C
  40. #endif // ASLLIB
  41.  
  42.  
  43. #include <devices/input.h>
  44. #include <devices/keymap.h>
  45. #include <devices/console.h>
  46. #include <devices/clipboard.h>
  47. #include <exec/memory.h>
  48. #include <exec/interrupts.h>
  49. #include <exec/execbase.h>
  50. #include <graphics/gfxmacros.h>
  51. #include <graphics/gfxbase.h>
  52. #include <graphics/text.h>
  53. #include <libraries/dosextens.h>
  54. #include <workbench/workbench.h>
  55. #include <workbench/startup.h>
  56. #include <workbench/icon.h>
  57.  
  58. #ifndef DSIZE
  59. #define DSIZE 130
  60. #define FCHARS 30
  61. #endif
  62.  
  63. /* Mikael's memory macros */
  64. #define Create(_Obj)     AllocMem((LONG)sizeof(struct _Obj), MEMF_PUBLIC|MEMF_CLEAR)
  65. #define Kill(_Obj)       FreeMem(_Obj, (LONG)sizeof(*_Obj))
  66. #define Delete(_Obj)     if (_Obj) FreeMem(_Obj, (LONG)sizeof(*_Obj))
  67.  
  68. /* Mikael's list macros */
  69. #define HEADSENTINEL(l) ((struct Node *)&(((struct List *)(l))->lh_Head))
  70. #define TAILSENTINEL(l) ((struct Node *)&(((struct List *)(l))->lh_Tail))
  71. #define HEAD(l) (((struct List *)(l))->lh_Head)
  72. #define TAIL(l) (((struct List *)(l))->lh_Tail)
  73. #define PRED(n) (((struct Node *)(n))->ln_Pred)
  74. #define SUCC(n) (((struct Node *)(n))->ln_Succ)
  75. #define ENDLISTP(n) (SUCC(n) == NULL)
  76. #define LASTP(n) (ENDLISTP(SUCC(n)))
  77. #define FIRSTP(n) (PRED(PRED(n)) == NULL)
  78. #define EMPTYLIST(l) (PRED(TAILSENTINEL(l)) == HEADSENTINEL(l))
  79.  
  80. #define MAPLIST(list,nodetype,loopvar)       \
  81.     for (loopvar = (nodetype)HEAD(list);     \
  82.          !ENDLISTP(loopvar);                 \
  83.          loopvar = (nodetype)SUCC(loopvar))
  84.  
  85. #define SAFEMAPLIST(list,nodetype,loopvar,safevar)                          \
  86.     for (loopvar = (nodetype)HEAD(list), safevar = (nodetype)SUCC(loopvar); \
  87.          safevar != NULL;                                                   \
  88.          loopvar = safevar, safevar = (nodetype)SUCC(loopvar))
  89.  
  90. #define KILLLIST(list,nodetype)                \
  91. {                                              \
  92.     REGISTER nodetype *_n1, *_n2;              \
  93.     SAFEMAPLIST(list, nodetype *, _n1, _n2) {  \
  94.         FreeMem(_n1, (LONG)sizeof(nodetype));  \
  95.     }                                          \
  96. }
  97.  
  98. #define SNAPRSRC "Snap.resource"
  99.  
  100. struct SnapRsrc {
  101.     struct Node node;
  102.     struct Task *Task;
  103.     WORD Priority;
  104.     WORD gfxqual;
  105.     WORD textqual;
  106.     WORD insertkey;
  107.     WORD cwkey;
  108.     char Prepend[17];
  109.     char Append[17];
  110.     WORD flags;
  111.     LONG chardelay;
  112.     LONG linedelay;
  113.     UWORD CrawlPtrn;
  114.     WORD StartUnit;
  115.     WORD FrameMask;
  116.     WORD BadChar;
  117.     WORD CacheSize;
  118.     WORD Leading;
  119.     struct MinList CachedWindows;
  120.     struct TextFont *AlternateFont;
  121. };
  122.  
  123. #define XEROX           1
  124. #define EARLYPATCH      2
  125. #define TRUEUNDERSCORE  4
  126. #define JOINLONG        8
  127. #define SIMPLEREFRESH  16
  128.  
  129. struct Snap {
  130.     ULONG Size;
  131.     char Chars[1];
  132. };
  133.  
  134. #define MAX_Depth 8
  135.  
  136. struct GfxSnap
  137. {
  138.     struct Gadget DiskGad;
  139.     struct Gadget ClipGad;
  140.     struct Gadget VProp;
  141.     struct Gadget HProp;
  142.     struct PropInfo VInfo;
  143.     struct PropInfo HInfo;
  144.     struct Image VImage;
  145.     struct Image HImage;
  146.     WORD topbar, leftbar, rightbar, bottombar;
  147.     LONG x, y;
  148.     LONG width, height;
  149.     LONG depth;
  150.     LONG viewmode;
  151.     UBYTE rgb[ (1L << MAX_Depth)][ 3];
  152.     SHORT pagew;
  153.     SHORT pageh;
  154.     struct Window *window;
  155.     struct BitMap *BitMap;
  156. };
  157.  
  158. #define MINWIDTH  90
  159. #define MINHEIGHT 50
  160.  
  161. struct CacheWindow {
  162.     struct MinNode Node;
  163.     struct Window *Window;
  164.     SHORT xoff;
  165.     SHORT yoff;
  166.     SHORT fw;
  167.     SHORT fh;
  168.     struct TextFont *font;
  169. };
  170.  
  171. #define SAVEGAD 1
  172. #define DISKGAD 2
  173. #define CLIPGAD 3
  174. #define NAMEGAD 4
  175. #define VPROP   5
  176. #define HPROP   6
  177.  
  178. struct CBFHandle {
  179.     WORD Type;
  180.     union {
  181.         BPTR File;
  182.         struct IOClipReq *ClipReq;
  183.     } Handle;
  184. };
  185.  
  186. #define CBFCLIP 0
  187. #define CBFFILE 1
  188.  
  189. #define TitleFont(win) ((struct TextFont *)(win->IFont ? win->IFont : win->RPort->Font))
  190.  
  191. #define Swap2L(_x,_y) { REGISTER LONG _t = _x; _x = _y; _y = _t; }
  192.  
  193. #define noaction 0
  194. #define snapgfx  1  /* window */
  195. #define snaptext 2  /* text */
  196. #define insert   4  /* inserting */
  197. #define cancel     5
  198.  
  199. #define waiting   0
  200. #define selregion 1
  201. #define waitext   2
  202. #define selgfx    3
  203. #define waitgfx   4
  204.  
  205. #define UNIT_FRAME 1 /* rect of chars */
  206. #define UNIT_CHAR  2 /* characters with line wrap */
  207. #define UNIT_WORD  3 /* words with line wrap */
  208. #define UNIT_LINE  4 /* lines */
  209. #define CHEIGHT   24 /* Max height of snap font */
  210.  
  211. #include <string.h>     /* Prototyping of string functions */
  212. #include <stdlib.h>     /* Prototyping of standard lib functions */
  213.  
  214. VOID SaveClip(UBYTE *, ULONG);
  215. struct Snap *FetchClip(VOID);
  216. VOID MultiDraw(struct RastPort *, LONG, Point *);
  217. VOID crawl_frame(LONG);
  218. VOID erase_frame(VOID);
  219. VOID draw_frame(LONG);
  220. ULONG AsciiToInputEvent(ULONG, struct InputEvent *, struct KeyMap *);
  221. struct Screen *WhichScreen(VOID);
  222. struct Window *WhichWindow(struct Screen *);
  223.  
  224.  
  225. VOID CacheSync(struct TextFont *);
  226. VOID CacheWindow(struct Window *, LONG, LONG, SHORT, SHORT, struct TextFont *);
  227. struct CacheWindow *GetCachedWindow(struct Screen *, struct Window *);
  228. struct TextFont *SmartOpenFont(struct TextAttr *);
  229. VOID CloseStuff(VOID);
  230. VOID CloseLibs(VOID);
  231. WORD OpenLibs(VOID);
  232. WORD OpenStuff(VOID);
  233. VOID SafePatch(VOID);
  234. VOID SafeRestore(VOID);
  235. WORD bump(struct CBFHandle *, WORD, UBYTE *, WORD);
  236. ULONG WriteBody(struct BitMap *, struct CBFHandle *);
  237. WORD SaveGS(struct GfxSnap *, struct CBFHandle *);
  238. //WORD isdigit(char);
  239. LONG dectoint(char *);
  240. LONG hextoint(char *);
  241. VOID InsertAscii(ULONG);
  242. VOID GadText(struct Gadget *, char *, LONG);
  243. VOID SwapColorMap(struct GfxSnap *);
  244. VOID CheckWindowMsgs(VOID);
  245. WORD SetSnapFont(struct TextFont *);
  246. WORD SnapIsSpace(LONG, LONG);
  247. VOID update_frame(VOID);
  248. VOID FindWord(VOID);
  249. VOID ChangeUnit(VOID);
  250. VOID ExtendSelection(VOID);
  251. WORD SnapChars(VOID);
  252. WORD HandleChars(VOID);
  253. VOID FixHeights(VOID);
  254. struct GfxSnap *SnapGfx(struct RastPort *);
  255. VOID ExtendGfx(VOID);
  256. VOID gfx_frame(VOID);
  257. WORD HandleGfx(VOID);
  258. struct Window *opensharedwindow(struct NewWindow *);
  259. VOID closesharedwindow(struct Window *);
  260. VOID SetUpBorder(struct Border *, struct Gadget *);
  261. VOID AdjustSize(struct GfxSnap *);
  262. VOID SyncGS(struct GfxSnap *);
  263. SHORT OpenCW(VOID);
  264. UBYTE __stdargs __saveds interpret(UWORD *);
  265. VOID __stdargs __saveds CopyFont(VOID);
  266. VOID __stdargs __saveds myhandler();
  267.  
  268. ULONG AsciiToInputEvent( ULONG ascii, register struct InputEvent *ie, struct KeyMap *km);
  269.  
  270. VOID SafePatch( void);
  271. VOID SafeRestore( void);
  272.  
  273. VOID CBFInit(struct CBFHandle *CBFH);
  274. VOID CBFEndWrite(struct CBFHandle *CBFH);
  275. VOID CBFEndRead(struct CBFHandle *CBFH);
  276. ULONG CBFSeek(struct CBFHandle *CBFH, LONG Offset, LONG Origin);
  277. LONG CBFWrite(struct CBFHandle * CBFH, STRPTR Buf, ULONG BufSize);
  278. LONG CBFRead(struct CBFHandle *CBFH, STRPTR Buf, ULONG BufSize);
  279.  
  280. VOID erase_frame( void);
  281. VOID crawl_frame( LONG dir);
  282. VOID draw_frame( LONG ft);
  283.  
  284. void __stdargs __saveds myhandler( void);
  285.  
  286. int disp( register struct RexxMsg *msg, register struct rexxCommandList *dat, char *p);
  287.